In the development of user experience (UX) software the business logic code usually involves integration with the presentation code. As software techniques and technologies have evolved the notion of separating the business logic from the presentation was more appealing. More recently, systems usually have very distinct layers of separation between presentation and business logic. Although separated, these layers are in most cases still tightly coupled. Presentation is highly dependent on the business logic format, and business logic on the other end has to produce data in a specific form that the presentation logic can consume. The development of UX frameworks has evolved that requires data to be presented in a certain way, and data sources that present information, in a fixed way.
Existing presentation frameworks require data providers to conform to a strongly typed data model. Thus, the application layer or an intermediate layer needs to implement the serialization and transformation to conform to that model. Any modifications and extensions are compile time, rather than something that can be late bound at runtime.
There can be large investments in user training when employing a certain user interface (UI), for example, and as a result, data providers have to write intermediate layers to surface data in each of the popular UI widgets. Moreover, there can be similar investments data sources which need to be presented to different personas on different devices. For example, the UX provider has to write code to interface to the popular sources. The problems associated with exposing different business logic though a different UX, in any combination, become more and more daunting as systems evolve and become increasingly complex.